package com.testing.strclass;

import java.text.SimpleDateFormat;
import java.util.Date;

public class StudyStr {

    public static void main(String[] args) {
        // 字符串底层的数据结构为字符数组。字符串文本即为字符串类的一个对象，它是一个常量
        String a = "abc";
        char[] charList = {'a','b','c'};
        String strList = new String(charList);
        // 两个字符串相等
        System.out.println(a.equals(strList));
        // 两个字符串地址相等，说明是一样的
        System.out.println(a.hashCode()==strList.hashCode());
        System.out.println(strList);

        // String对象不允许改变内容是正确的，但是可以改变定义的String类型的变量指向，你定义的String name其实是一个指向String对象的指针，如果不存在对象就为null。
        String name = "adb";
        System.out.println(name.hashCode());
        name += "d";
        // 两次打印出来的hashCode值不一致，说明新创建了指引
        System.out.println(name.hashCode());


        String num = "1121";
        // 链接两个字符串，也可以使用+号
        name = name.concat(num);
        System.out.println(name);


        Date data = new Date();
        System.out.println(data);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(simpleDateFormat.format(data));

        Long time = System.currentTimeMillis();
        System.out.println("当前时间搓：" + time);
        String times = simpleDateFormat.format(Long.parseLong("1599445273461"));
        System.out.println(times);

        // String类常用方法总结
        String start = "list";
        // 以什么开始的字符串
        System.out.println(start.startsWith("l"));
        System.out.println(start.startsWith("a"));
        // 指定下标以什么开始
        System.out.println(start.startsWith("l", 0));
        // 以什么字符串结尾
        System.out.println(start.endsWith("t"));

        // 字符串转化为字符数据
        char[] listChar = start.toCharArray();
        System.out.println(String.valueOf(listChar));

        // 分割字符串,没有找到分割的字符串时返回整个字符串为一个列表
        String[] str = start.split("s");
        for (String s:str) {
            System.out.println(">>>>>>>>>>" + s);
        }

        // 获取字符串长度
        System.out.println(start.length());
        // 获取字符最后出现的下标，没有则返回-1
        //可以传数字和字符
        System.out.println(start.lastIndexOf('s'));
        // 从指定的索引处开始进行反向搜索
        System.out.println(start.lastIndexOf('s',0));
        // 传字符串
        System.out.println(start.lastIndexOf("s"));
        // 从指定的索引处开始进行反向搜索
        System.out.println(start.lastIndexOf("s",0));
        // 指定字符串与StringBuffer比较
        System.out.println(start.contentEquals(new StringBuffer("list")));
        // 返回指定下标对应的字符的值
        start.charAt(0);
    }
}
